Communications networks that provide a user with mobile data access are commonplace today. For example, IEEE 802.11 (Wi-Fi) networks can provide an authorised user with network access in the home, in the office, or even in a public place without the need for a permanent fixed connection. Whilst networks such as Wi-Fi allow a user a fair degree of freedom to roam to wherever there coverage and still maintain a network connection, there are many problems associated with trying to provide seamless data access whilst moving between coverage areas or networks. One of these relates to the handover of active data sessions.
To illustrate this problem, let us consider the following example. A user with a laptop connects to a Wi-Fi hotspot served by particular access points, and is allocated an Internet Protocol (IP) address. The user then roams to a different part of the hotspot covered by a different access point. The connection with the first access point will be lost, as will the original IP address, and a new connection will be established with the second access point and a new IP address will be assigned. Indeed, a change in IP address will be necessary whenever a user moves from one IP subnet to another IP subnet, irrespective of whether there is a change of access points. If the laptop was engaged in an active data session with the network, for example whilst downloading a multimedia file from a remote data source, then that session will be interrupted when the first connection is terminated. However, resumption of the multimedia download that was occurring before handover does not automatically occur when the laptop reconnects to the network, as the change in IP address requires a new session to be created and the data routed from the data source to the new IP address. Without this; the data source will only have the original IP address to send data to and thus transmissions to this IP address will never reach the laptop.
One protocol that has been suggested to solve this problem is the session initiation protocol (SIP), which can be adapted to handle handover's between networks.
SIP is an application-layer signalling protocol developed by the Internet Engineering Task Force (IETF) for initiating, modifying, and terminating real-time user sessions over an IP network. SIP is a signalling protocol that enables one user device to open a session with another user device and to negotiate the parameters for the session. The actual data to be exchanged, be it audio, video or multimedia content, during the session between the user devices is done using an appropriate transport protocol. In many cases, the transport protocol is RTP (real time transport protocol). The session description protocol (SDP) is used by SIP to define the format and parameters relating to the (RTP) data session.
Under SIP, a server wishing to send data to a user device first needs to establish a session with that device using SIP. This is done by sending an SIP Invite message to the universal resource indicator (URI) associated with the user device, which is a fixed address of the format “sip:user@domain”. This message is sent via a SIP proxy server, which maps it onto the actual IP address of the user device and forward the message on accordingly. Once the user device accepts the invitation, a RTP session is opened, which allows the server to send data directly to the user device according to its IP address negotiated during the session set-up process.
Under SIP, when a user device moves to a new location and undergoes handover, any open data session with a data server will be terminated and re-registration of the user device using the new IP address occurs with the SIP registrar server. The user device then notifies the data server of the new IP address, so that a new RTP session can be set up to the new IP address. Otherwise any restarted RTP session will send data to the old IP address. This process is illustrated in the message flow diagram of FIG. 2, steps 226 to 236, which is described in more detail later.
This process of handover using SIP, whilst effective, is fairly slow. RTP sessions need to be terminated and restarted every time there is a change in IP address, which is time consuming. In particular, the process of creating a new SIP Invite message to notify the data server of the new IP address takes time, as does the sending of it and the processing by the SIP stack at the data server to extract the new IP address in the message. The new IP address is then passed to the application interface in the data server, which in turn passes it to the application that is sending the data to the user device for creating a new RTP session. A new RTP session is then finally created. All this takes time, so when a user device moves to a new location, after the IP address has changed, but before the change is picked up by the application in the data server sending the data, data can be lost from the original RTP session sending data to the old IP address. This can result in noticeable interruptions to real-time services such as a voice call or video streaming.